/**
 * @file typedef.h
 * @author Mayfly Zhang (zhangquzhi123456@163.com)
 * @brief 定义 integer 类型
 * @version 0.0
 * @date 2021-03-29
 *
 * @copyright Copyright (c) 2021
 *
 */

#ifndef _TYPEDEF_H_
#define _TYPEDEF_H_
/* exact-width signed integer types */
typedef char 			    int8_t;
typedef short			    int16_t;
typedef int				    int32_t;
// typedef long			    int32_t;
typedef long long	        int64_t;

/* exact-width unsigned integer types */
typedef unsigned char		uint8_t;
typedef unsigned short 	    uint16_t;
typedef unsigned int		uint32_t;
// typedef unsigned long 		uint32_t;
typedef unsigned long long 	uint64_t;


#define __I                 volatile const  /*!< defines 'read only' permissions      */
#define __O                 volatile        /*!< defines 'write only' permissions     */
#define __IO                volatile        /*!< defines 'read / write' permissions   */

typedef int32_t             s32;
typedef int16_t             s16;
typedef int8_t              s8;

typedef const int32_t       sc32;   /*!< Read Only */
typedef const int16_t       sc16;   /*!< Read Only */
typedef const int8_t        sc8;    /*!< Read Only */

typedef __IO int32_t        vs32;
typedef __IO int16_t        vs16;
typedef __IO int8_t         vs8;

typedef __I int32_t         vsc32;  /*!< Read Only */
typedef __I int16_t         vsc16;  /*!< Read Only */
typedef __I int8_t          vsc8;   /*!< Read Only */

typedef uint32_t            u32;
typedef uint16_t            u16;
typedef uint8_t             u8;

typedef const uint32_t      uc32;   /*!< Read Only */
typedef const uint16_t      uc16;   /*!< Read Only */
typedef const uint8_t       uc8;    /*!< Read Only */

typedef __IO uint32_t       vu32;
typedef __IO uint16_t       vu16;
typedef __IO uint8_t        vu8;

typedef __I uint32_t        vuc32;  /*!< Read Only */
typedef __I uint16_t        vuc16;  /*!< Read Only */
typedef __I uint8_t         vuc8;   /*!< Read Only */


#define MF_TRUE             1U
#define MF_FALSE            0U
#define MF_NULL             ((void *)0U)


#endif
